package fixmodel.impl;

import fixmodel.base.Quack;
import fixmodel.observable.Observable;
import fixmodel.observable.Observer;

/**绿头鸭
 * @author yaojianfeng
 */
public class MallardDuck implements Quack {
    private Observable observable;

    /**
     * 在构造器中,我们创建一个Observable,并传入一个MallardDuck的引用
     */
    public MallardDuck( ) {

        observable = new Observable(this);
    }

    /**
     * 只需要做好一件事儿即可
     */
    @Override
    public void quack() {
        System.out.println("绿头鸭 呱~呱~叫!");
        notifyObservers();
    }

    /**
     * 注册方法
     *
     * @param observer 被观察者
     */
    @Override
    public void registerObserver(Observer observer) {
        observable.registerObserver(observer);
    }

    /**
     * 通知观察者
     */
    @Override
    public void notifyObservers() {
        observable.notifyObservers();
    }
}
